from sqlalchemy import Column, String, DateTime, func
from sqlalchemy.dialects.postgresql import JSONB
from db.base import Base
import uuid


class ProofmapperSnapshot(Base):
    """
    proofmapper_snapshots 表的 ORM 模型

    支持同一 assessment_type 下存在多个并列的调研材料快照。

    表结构：
    CREATE TABLE proofmapper_snapshots (
        id                 VARCHAR PRIMARY KEY,           -- UUID 主键
        assessment_type    VARCHAR NOT NULL,              -- 评估类型（分类字段）
        name               VARCHAR NOT NULL,              -- 快照名称（必填）
        saved_at           TIMESTAMPTZ DEFAULT now(),     -- 保存/更新时间
        evaluation_items   JSONB                          -- 调研材料快照数据
    );
    """
    __tablename__ = "proofmapper_snapshots"

    id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
    assessment_type = Column(String, nullable=False, index=True)
    name = Column(String, nullable=False)
    saved_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
    evaluation_items = Column(JSONB, nullable=True)
